//package com.example.chatweb.controller;
//
//import com.example.chatweb.service.FileService;
//import com.example.chatweb.utils.MyExceptionHandler;
//import com.example.chatweb.utils.R;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.net.URL;
//import java.net.URLConnection;
//import java.net.URLEncoder;
//import javax.servlet.http.HttpServletResponse;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.multipart.MultipartFile;
//
///**
// * <h3>chat-web</h3>
// *
// * @author HuangJiayu
// * @description <p>文件上传下载删除控制类</p>
// * @date 2024-04-15 15:32
// **/
//@RestController
//@Slf4j
//public class FileController {
//
//	@Autowired
//	private FileService fileService;
//
//	//TODO: 先只做上传文件接口
//
//	/**
//	 * 上传文件
//	 *
//	 * @param file 文件
//	 * @return 结果
//	 */
//	@PostMapping("/upload_file")
//	public R upload(@RequestParam("file") MultipartFile file) {
//		log.info(file.getOriginalFilename());
//		String fileName = file.getOriginalFilename();
//		try {
//			InputStream inputStream = file.getInputStream();
//			String images = fileService.uploadFile(inputStream, "", fileName);
//			return R.ok(images);
//		} catch (MyExceptionHandler e) {
//			log.error("上传文件失败", e);
//			return R.failure("上传文件失败");
//		} catch (Exception e) {
//			log.error("出现未捕获异常", e);
//			return R.failure("上传文件失败,出现系统未捕获异常");
//		}
//	}
//
//	/**
//	 * 描述: 根据URL下载文件，由于是URL，所以不应该利用SSH下载，而是走nginx。 note:
//	 * 一般不会调用该接口，因为上传文件的URL前端直接可获取，应该前端自己直接访问，最好不要SpringBoot再转存一次
//	 */
//	@PostMapping("/download_file")
//	public void downloadFile(@RequestParam("url") String url, HttpServletResponse response)
//	 throws Exception {
//		URL realUrl = new URL(url);
//		// 根据url解析文件名字
//		String fileName = url.split("/")[url.split("/").length - 1];
//		URLConnection conn = realUrl.openConnection();
//		InputStream inputStream = conn.getInputStream();
//		response.reset();
//		response.setContentType(conn.getContentType());
//		response.setHeader("Content-Disposition",
//		 "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
//		byte[] buffer = new byte[1024];
//		int len;
//		OutputStream outputStream = response.getOutputStream();
//		while ((len = inputStream.read(buffer)) > 0) {
//			outputStream.write(buffer, 0, len);
//		}
//		inputStream.close();
//	}
//}
